/*
 * ComputeAblationHeatfluxMaterial.h
 *
 *  Created on: Feb 4, 2020
 *      Author: liuxiao
 */

#pragma once

#include "Material.h"
#include "LinearInterpolation.h"

class Function;

class ComputeAblationHeatfluxMaterial : public Material
{
public:
	ComputeAblationHeatfluxMaterial(const InputParameters & parameters);

protected:

	MaterialProperty<Real> & _hw;
	MaterialProperty<Real> & _hc;
	MaterialProperty<Real> & _qh;
	MaterialProperty<Real> & _qrad_out;
	MaterialProperty<Real> & _qn;
	//wall mass concentration
	const MaterialProperty<Real> & _Cw_C1;
	const MaterialProperty<Real> & _Cw_C2;
	const MaterialProperty<Real> & _Cw_C3;
	const MaterialProperty<Real> & _Cw_C4;
	const MaterialProperty<Real> & _Cw_C5;
	const MaterialProperty<Real> & _Cw_O2;
	const MaterialProperty<Real> & _Cw_O;
	const MaterialProperty<Real> & _Cw_CO;
	const MaterialProperty<Real> & _Cw_CO2;
	const MaterialProperty<Real> & _Cw_N2;
	const MaterialProperty<Real> & _Cw_N;
	const MaterialProperty<Real> & _Cw_CN;
	const MaterialProperty<Real> & _Cw_C2N;
	const MaterialProperty<Real> & _qc;
	const MaterialProperty<Real> & _hr;
	const MaterialProperty<Real> & _Tw_qc;
	const MaterialProperty<Real> & _epsilon;
	const MaterialProperty<Real> & _mc;
	const MaterialProperty<Real> & _injection_coff;
	const VariableValue & _temperature;
	Real _sigma;
	//functions
	Real compute_hw(Real Tw);
	Real compute_hc(Real Tw);
	//compute properties
	virtual void computeProperties();




};

template<>
InputParameters validParams<ComputeAblationHeatfluxMaterial>();





